# coding: utf-8
# Game of Bombs - Projeto P1
# (C) 2014, Roberto Matheus, Angelo Costa / UFCG, Programação 1

# Menu

import sys, pygame
from pygame.locals import *
from fases import *

class Menu:
	
	def __init__(self, screen):
		self.fonte_cor = (255, 255, 255)
		self.fonte_cor_selecao = (0, 0, 0)
		self.fonte = pygame.font.Font('fonte/Minecraftia.ttf', 18)
		self.fonte_creditos = pygame.font.Font('fonte/Minecraftia.ttf', 12)
		self.botao_atual = 0
		self.screen = screen
		self.main_menu_bkg = pygame.image.load('images/titlescreen.png')
		self.menu_creditos_bkg = pygame.image.load('images/creditos_throne.png')
		self.menu_selecao_heroi_bkg = pygame.image.load('images/selecao_heroi.png')
		self.stark_image = pygame.image.load('images/stark.png')
		self.targaryen_image = pygame.image.load('images/targaryen.png')
		self.lannister_image = pygame.image.load('images/lannister.png')
		self.baratheon_image = pygame.image.load('images/baratheon.png')
		
	def main_menu(self):
		if self.botao_atual > 3:
			self.botao_atual = 0
		if self.botao_atual < 0:
			self.botao_atual = 3
		
		self.texto = ['Start Game', 'Credits', 'Quit', 'Instructions']	
		self.botoes = [self.fonte.render(self.texto[0], True, self.fonte_cor),
		               self.fonte.render(self.texto[1], True, self.fonte_cor),
		               self.fonte.render(self.texto[2], True, self.fonte_cor),
		               self.fonte.render(self.texto[3], True, self.fonte_cor)]
		for numero_botao in range(len(self.botoes)):
			if numero_botao == self.botao_atual:
				self.botoes[numero_botao] = self.fonte.render(self.texto[numero_botao], True, self.fonte_cor_selecao)
				
		self.screen.blit(self.main_menu_bkg, (0, 0))
		self.screen.blit(self.botoes[0], (345, 495))
		self.screen.blit(self.botoes[1], (345, 520))
		self.screen.blit(self.botoes[2], (345, 545))
		self.screen.blit(self.botoes[3], (345, 570))
		
	def menu_creditos(self):
		
		done = False
		
		self.texto = ['Back', 'Music: floating point music', 'Menu Image: Lailton Silva']
		self.botao = self.fonte.render(self.texto[0], True, self.fonte_cor_selecao)
		self.credito_musica = self.fonte_creditos.render(self.texto[1], True, (40, 40, 40))
		self.credito_imagem = self.fonte_creditos.render(self.texto[2], True, (40, 40, 40))
		
		while not done:
			
			self.screen.blit(self.menu_creditos_bkg, (0, 0))
			self.screen.blit(self.botao, (20, 530))
			self.screen.blit(self.credito_musica, (20, 330))
			self.screen.blit(self.credito_imagem, (20, 350))
			
			for event in pygame.event.get():
				t = event.type
				
				if t == KEYDOWN:
					k = event.key
					
				if t == QUIT:
					done = True
				
				if t == KEYDOWN:
					if k == K_ESCAPE:
						done = True
					
					if k == K_RETURN or k == K_KP_ENTER:
						done = True
					
					if k == K_F1:
						pygame.mixer.music.pause()
					
					if k == K_F2:
						pygame.mixer.music.unpause()
			
			pygame.display.update()
			
	def menu_selecao_heroi(self):
		
		done = False
				
		while not done:
			
			if self.botao_atual > 4:
				self.botao_atual = 0
			if self.botao_atual < 0:
				self.botao_atual = 4
			
			self.texto = ['Daenerys', 'Robb', 'Tyrion', 'Robert', 'Back']
			self.botoes = [self.fonte.render(self.texto[0], True, self.fonte_cor),
					       self.fonte.render(self.texto[1], True, self.fonte_cor),
		                   self.fonte.render(self.texto[2], True, self.fonte_cor),
		                   self.fonte.render(self.texto[3], True, self.fonte_cor),
		                   self.fonte.render(self.texto[4], True, self.fonte_cor)]
		               
			for numero_botao in range(len(self.botoes)):
				if numero_botao == self.botao_atual:
					self.botoes[numero_botao] = self.fonte.render(self.texto[numero_botao], True, self.fonte_cor_selecao)
					
					if self.botao_atual == 0:
						self.menu_selecao_heroi_bkg.blit(self.targaryen_image, (305, 197))
					if self.botao_atual == 1:
						self.menu_selecao_heroi_bkg.blit(self.stark_image, (305, 197))
					if self.botao_atual == 2:
						self.menu_selecao_heroi_bkg.blit(self.lannister_image, (305, 197))
					if self.botao_atual == 3:
						self.menu_selecao_heroi_bkg.blit(self.baratheon_image, (305, 197))
						
			
			self.screen.blit(self.menu_selecao_heroi_bkg, (0, 0))
			self.screen.blit(self.botoes[0], (345, 440))
			self.screen.blit(self.botoes[1], (345, 465))
			self.screen.blit(self.botoes[2], (345, 490))
			self.screen.blit(self.botoes[3], (345, 515))
			self.screen.blit(self.botoes[4], (150, 540))
			
			for event in pygame.event.get():
				t = event.type
				
				if t == KEYDOWN:
					k = event.key
					
				if t == QUIT:
					done = True
				
				if t == KEYDOWN:
					if k == K_ESCAPE:
						done = True
					
					if k == K_RETURN or k == K_KP_ENTER:
						
						if self.botao_atual == 0:
							fases = Fases('Daenerys', self.screen)
						if self.botao_atual == 1:
							fases = Fases('Robb', self.screen)
						if self.botao_atual == 2:
							fases = Fases('Tyrion', self.screen)
						if self.botao_atual == 3:
							fases = Fases('Robert', self.screen)
						if self.botao_atual == 4:
							done = True
							
					if k == K_UP or k == K_LEFT:
						self.botao_atual -= 1
							
					if k == K_DOWN or k == K_RIGHT:
						self.botao_atual += 1
					
					if k == K_F1:
						pygame.mixer.music.pause()
					
					if k == K_F2:
						pygame.mixer.music.unpause()
							
			pygame.display.update()
			
	def menu_instrucoes(self):
		
		done = False
		
		self.texto = ['Drop Bomb: Z', 'Move: Arrow Keys', 'Music ON: F1', 'Music OFF: F2', 'Back']
		self.botoes = [self.fonte.render(self.texto[0], True, self.fonte_cor),
		               self.fonte.render(self.texto[1], True, self.fonte_cor),
		               self.fonte.render(self.texto[2], True, self.fonte_cor),
		               self.fonte.render(self.texto[3], True, self.fonte_cor),
		               self.fonte.render(self.texto[4], True, self.fonte_cor_selecao)]
		
		while not done:
			
			self.screen.blit(self.main_menu_bkg, (0, 0))
			self.screen.blit(self.botoes[0], (220, 520))
			self.screen.blit(self.botoes[1], (420, 520))
			self.screen.blit(self.botoes[2], (220, 540))
			self.screen.blit(self.botoes[3], (420, 540))
			self.screen.blit(self.botoes[4], (370, 560))
			
			for event in pygame.event.get():
				t = event.type
				
				if t == KEYDOWN:
					k = event.key
					
				if t == QUIT:
					done = True
				
				if t == KEYDOWN:
					if k == K_ESCAPE:
						done = True
					
					if k == K_RETURN or k == K_KP_ENTER:
						done = True
					
					if k == K_F1:
						pygame.mixer.music.pause()
					
					if k == K_F2:
						pygame.mixer.music.unpause()
			
			pygame.display.update()
